const express = require('express');
const router = express.Router();
const { get, post } = require('../util/http');

// 获取计划任务列表
router.all('/GetCrontab', (req, res) => {
    post('GetCrontab').then(response => {
        res.send(response);
    }).catch((e) => {
        res.send(e)
    });
})

// 添加计划
router.all('/AddCrontab', (req, res) => {
    let params = req.body;
    if (typeof params.name == 'undefined' || params.name === '') {
        res.json({ status: false, msg: '计划名称不能为空' });
        return;
    }
    if (typeof params.sBody == 'undefined' || params.sBody === '') {
        res.json({ status: false, msg: '计划内容不能为空' });
        return;
    }
    if (typeof params.type == 'undefined' || params.type === '') {
        res.json({ status: false, msg: '执行周期不能为空' });
        return;
    }
    /**
     * 每个月1号0点30分执行
    * {type:'month',where1:'1',hour:'0',minute:'30'}
    * 每周二8点15分执行 (周日是0)
    * {type:'week',week:'2',hour:'8',minute:'15'}
    * 每天10点15分执行
    * {type:'day',hour:'10',minute:'15'}
    */
    post('AddCrontab', {
        sType: 'toShell',
        where1: '',
        hour: 1,
        minute: 30,
        week: '',
        ...params
    }).then(response => {
        res.send(response);
    }).catch((e) => {
        res.send(e)
    });
})

// 修改计划
router.all('/UpdateCrontab', (req, res) => {
    let params = req.body;
    if (typeof params.name == 'undefined' || params.name === '') {
        res.json({ status: false, msg: '计划名称不能为空' });
        return;
    }
    if (typeof params.sBody == 'undefined' || params.sBody === '') {
        res.json({ status: false, msg: '计划内容不能为空' });
        return;
    }
    if (typeof params.type == 'undefined' || params.type === '') {
        res.json({ status: false, msg: '执行周期不能为空' });
        return;
    }
    post('UpdateCrontab', {
        sType: 'toShell',
        where1: '',
        hour: 1,
        minute: 30,
        week: '',
        ...params
    }).then(response => {
        res.send(response);
    }).catch((e) => {
        res.send(e)
    });
})

// 设置计划是否启用
router.all('/SetCronStatus', (req, res) => {
    let params = req.body;
    if (typeof params.id == 'undefined') {
        res.json({ status: false, msg: 'id参数错误' });
        return;
    }
    //启用后设置自动停用，停用后设置自动启用
    post('SetCronStatus', { id: params.id }).then(response => {
        res.send(response);
    }).catch((e) => {
        res.send(e)
    })
})

// 删除计划
router.all('/DelCrontab', (req, res) => {
    let params = req.body;
    if (typeof params.id == 'undefined') {
        res.json({ status: false, msg: 'id参数错误' });
        return;
    }
    post('DelCrontab', { id: params.id }).then(response => {
        res.send(response);
    }).catch((e) => {
        res.send(e)
    });
})

// 立即执行计划
router.all('/StartTask', (req, res) => {
    let params = req.body;
    if (typeof params.id == 'undefined') {
        res.json({ status: false, msg: 'id参数错误' });
        return;
    }
    post('StartTask', { id: params.id }).then(response => {
        res.send(response);
    }).catch((e) => {
        res.send(e)
    });
})

// 获取日志
router.all('/GetLogs', (req, res) => {
    let params = req.body;
    if (typeof params.id == 'undefined') {
        res.json({ status: false, msg: 'id参数错误' });
        return;
    }
    post('GetLogs', { id: params.id }).then(response => {
        res.send(response);
    }).catch((e) => {
        res.send(e)
    });
})

// 删除日志
router.all('/DelLogs', (req, res) => {
    let params = req.body;
    if (typeof params.id == 'undefined') {
        res.json({ status: false, msg: 'id参数错误' });
        return;
    }
    post('DelLogs', { id: params.id }).then(response => {
        res.send(response);
    }).catch((e) => {
        res.send(e)
    });
})

module.exports = router;